// function Baby(x,y,rate,maxY,pEle){
//   this.left=x;//星星的x坐标
//   this.top=y;//星星的y坐标
//   this.rate=rate;//星星的速度
//   this.maxY=maxY;//地面高度
//   //每个星星包含一幅图片
//   this.img=document.createElement("img");
//   this.img.src="imgs/像素_钻石.png";
//   this.img.className="star";
//   this.img.style.left=this.left+"px";
//   this.img.style.top=this.top+"px";
//   pEle.appendChild(this.img);

//   this.xxFun=null;//给外界赋值函数地址进来，
//   this.toutchFun=null;//给外界赋值函数地址进来 
//   this.getRate=function(){
//      return this.rate;
//   }
//   this.getXRate=function(){
//       return 0;
//   }
// }

class Baby {
  constructor(x,y,rate,maxY,pEle){
    this.left=x;//星星的x坐标
    this.top=y;//星星的y坐标
    this.rate=rate;//星星的速度
    this.maxY=maxY;//地面高度
    //每个星星包含一幅图片
    this.img=document.createElement("img");
    this.img.src="imgs/像素_钻石.png";
    this.img.className="star";
    this.img.style.left=this.left+"px";
    this.img.style.top=this.top+"px";
    pEle.appendChild(this.img);
    this.xxFun=null;//给外界赋值函数地址进来，
    this.toutchFun=null;//给外界赋值函数地址进来 
  }
  getRate(){
      return this.rate;
  }
  getXRate(){
    return 0;
  }
  move(){//星星向下掉的方法
    this.top+=this.getRate();//步进速度
    this.left+=this.getXRate();///星星左右飘动的速度
    //越界处理
    if(this.top>this.maxY){
        if(this.xxFun){//在适合的时机的时候调用，调用的是谁，由使用者传函数来决定，相当于是触发事件
            this.xxFun();
        }       
       this.reset();//重新往下掉
       return;
    }
    //更新图片的位置
    this.img.style.top=this.top+"px";
    this.img.style.left=this.left+"px";
  }
  reset(){
    this.top=0;
    this.left=parseInt(Math.random()*720);
    this.img.style.top=this.top+"px";
    this.img.style.left=this.left+"px";
  }
  isToutch(ele2){
    let ele1=this.img;
    //获取元素最终的样式结果(各种样式叠加后的最终结果)
    let ele1style=window.getComputedStyle(ele1,null);
    let ele2style=window.getComputedStyle(ele2,null);
  
    let ele1_left=parseInt(ele1style.left);
    let ele1_top=parseInt(ele1style.top);
    let ele1_right=ele1_left+ele1.offsetWidth;
    let ele1_bottom=ele1_top+ele1.offsetHeight;
  
    let ele2_left=parseInt(ele2style.left);
    let ele2_top=parseInt(ele2style.top);
    let ele2_right=ele2_left+ele2.offsetWidth;
    let ele2_bottom=ele2_top+ele2.offsetHeight;
  
    if(ele1_right<ele2_left||ele1_left>ele2_right
       ||ele1_bottom<ele2_top||ele1_top>ele2_bottom)
       return false;
    this.reset();
    if(this.toutchFun)//触发钩子方法，当碰撞的时候需要做的事情，由外界传入
        this.toutchFun();//我们只负责触发
    return true;
  }
}
export default Baby;